
package entrega;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Programa en el que se  introduce el número de billetes de autobus deseados y 
 * la edad para la que se desean
 * Se contabilizará el total de entradas vendidas, el total recaudado, así como
 * el total de entradas por categoría y su recaudación, y el porcentaje de 
 * ocupación del autobus
 * El programa finaliza al intoducir un 0 o superar las plazas libres
 *    Autor:Fernando Ortega Gonzalez
 */
public class ejer3 
{//clase ejer3
    public static void main(String args[])throws IOException
    {//main
        int plazas=60,jubilado=0,joven=0,infantil=0,adulto=0,totalinfantil,billetes,edad;
        float totaljoven,totaladulto,totaljubilado,total;
        boolean ocupado=false;
        billetes=pedirBilletes("¿Cuantos billetes desea?\t",plazas);
        while(billetes!=0||ocupado)
        {
            plazas = plazas - billetes;
            edad = pedirEdad("¿Para que edad?\t");
            while (edad <0) 
            {//edad positiva
                edad = pedirEdad("Edad errónea, introduzca de nuevo\t");
            }//edad  positiva
            if (edad <= 6) {//infantil
                infantil = infantil + billetes;
            }//infantil
            else {//no infantil
                if (edad <= 18) {//joven
                    joven = joven + billetes;
                }//joven
                else {//no joven
                    if (edad <= 65) {//adulto
                        adulto = adulto + billetes;
                    }//adulto
                    else {//jubilado
                        jubilado = jubilado + billetes;
                    }//jubilado
                }//no joven
            } //no infantil
            //System.out.println("las plazas disponibles son\t" + plazas);
            if(plazas==0)
            {
               System.out.println("No quedan plazas\n");
               ocupado=true;
            }
            else
            {
                billetes = pedirBilletes("¿Cuantos billetes desea?\t",plazas);
            } 
            System.out.print(ocupado);
        }//mientras haya plazas   
        totalinfantil = (infantil * 0);
        totaljoven = (float) (joven * 0.5);
        totaladulto = adulto * 1;
        totaljubilado = (float) (jubilado * 0.25);
        total = totalinfantil + totaljoven + totaladulto + totaljubilado;
        System.out.println("0-6 años\t" + infantil + "\t" + totalinfantil);
        System.out.println("6-18 años\t" + joven + "\t" + totaljoven);
        System.out.println("18-65 años\t" + adulto + "\t" + totaladulto);
        System.out.println("65- años\t" + jubilado + "\t" + totaljubilado);
        System.out.println("TOTAL\t\t"+plazas+"\t"+total);
        
    }//main
    /**
     * 
     * @param mensaje
     * @return
     * @throws IOException 
     */
    
    public static int pedirBilletes(String mensaje, int libres)throws IOException
    {
        int numero;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.print(mensaje);
        numero=Integer.parseInt(teclado.readLine());
        while(numero>libres)
        {
            System.out.println("Ha solicitado más plazas de las que quedan,introduzca una nueva cantidad\n");
            numero=Integer.parseInt(teclado.readLine());
        }
        return numero;//DEVUELVE EL NUMERO
    } 
    /** Método que recibe una cadena de caracteres y devuelve un numero entero
     * 
     * @param mensaje
     * @return
     * @throws IOException 
     */
    public static int pedirEdad(String mensaje)throws IOException//Metodo que pide un número
    {//pedirEdad
        int numero;
        InputStreamReader flujo=new InputStreamReader(System.in);
        BufferedReader teclado=new BufferedReader(flujo);
        System.out.print(mensaje);//MENSAJE LO HE PASADO DESDE edad
        numero=Integer.parseInt(teclado.readLine());
        return numero;//DEVUELVE EL NUMERO
    } //pedirEdad
}//Clase ejer3

